Apprendre le C++ by collectif
Auteur:collectif [collectif]
La langue: fra
Format: epub
Tags: Informatique
Éditeur: O'Reilly
Publié: 2009-10-17T18:25:29+00:00
min (adr1, adr2) = monsieur
Application du patron min au type char *
Livre.book Page 347 Mardi, 26. juin 2007 7:02 19
1 - Exemple de création et d’utilisation d’un patron de fonctions
347
Le résultat peut surprendre, si vous vous attendiez à ce que min fournisse « la chaîne » "bon-
jour". En fait, à la rencontre de l’expression min (adr1, adr2), le compilateur a généré la
fonction suivante :
char * min (char * a, char * b)
{ if (a < b) return a ;
else return b ;
}
La comparaison a<b porte donc sur les valeurs des pointeurs reçus en arguments (ici, a était
inférieur à b, mais il peut en aller autrement dans d’autres implémentations). En revanche,
l’affichage obtenu par l’opérateur << porte non plus sur ces adresses, mais sur les chaînes
situées à ces adresses.
1.3.2 Application à un type classe
Pour pouvoir appliquer le patron min à une classe, il est bien sûr nécessaire que l’opérateur <
puisse s’appliquer à deux opérandes de ce type classe. Voici un exemple dans lequel nous
appliquons min à deux objets de type vect, classe munie d’un opérateur < fournissant un
résultat basé sur le module des vecteurs :
#include <iostream>
using namespace std ;
// le patron de fonctions min
template <class T> T min (T a, T b)
{ if (a < b) return a ;
else return b ;
}
// la classe vect
class vect
{ int x, y ;
public :
vect (int abs=0, int ord=0) { x=abs ; y=ord; }
void affiche () { cout << x << " " << y ; }
friend int operator < (vect, vect) ;
} ;
int operator < (vect a, vect b)
{ return a.x*a.x + a.y*a.y < b.x*b.x + b.y*b.y ;
}
// un exemple d’utilisation de min
main()
{ vect u (3, 2), v (4, 1), w ;
w = min (u, v) ;
cout << "min (u, v) = " ; w.affiche() ;
}
min (u, v) = 3 2
Utilisation du patron min pour la classe vect
Livre.book Page 348 Mardi, 26. juin 2007 7:02 19
Les patrons de fonctions
348
CHAPITRE 17
Naturellement, si nous cherchons à appliquer notre patron min à une classe pour laquel e
l’opérateur < n’est pas défini, le compilateur le signalera exactement de la même manière que
si nous avions écrit nous-mêmes la fonction min pour ce type.
Remarque
Un patron de fonctions pourra s’appliquer à des classes patrons, c’est-à-dire à un type de
classe instancié par un patron de classes. Nous en verrons des exemples dans le prochain
chapitre.
1.4 Contraintes d’utilisation d’un patron
Les instructions de définition d’un patron ressemblent à des instructions exécutables de défi-
nition de fonction. Néanmoins, le mécanisme même des patrons fait que ces instructions sont
utilisées par le compilateur pour fabriquer (instancier), chaque fois qu’il est nécessaire, les
instructions correspondant à la fonction requise ; en ce sens, ce sont donc des déclarations :
leur présence est toujours nécessaire, et il n’est pas possible de créer un module objet corres-
pondant à un patron de fonctions. Tout se passe en fait comme si, avec la notion de patron de
fonctions, apparaissaient deux niveaux de déclarations. On retrouvera le même phénomène
pour les patrons de classes. Par la suite, nous continuerons à parler de « définition d’un
patron ». En pratique, on placera les définitions de patrons dans un fichier approprié
d’extension h.
Télécharger
Ce site ne stocke aucun fichier sur son serveur. Nous ne faisons qu'indexer et lier au contenu fourni par d'autres sites. Veuillez contacter les fournisseurs de contenu pour supprimer le contenu des droits d'auteur, le cas échéant, et nous envoyer un courrier électronique. Nous supprimerons immédiatement les liens ou contenus pertinents.
Exercices en langage C++ by Claude Delannoy(1214)
Mort à crédit by Louis-Ferdinand Céline(1176)
JavaScript pour les Nuls grand format, 2e édition (French Edition) by Eva HOLLAND & Chris MINNICK(1163)
marginal by collectif(1140)
La philosophie du langage by Histoire(1073)
Le Rouge et le Noir by Un livre Un film(1072)
Le Seigneur de Bombay by Vikram Chandra(1067)
Guide pour investir by Robert T. Kiyosaki(1057)
La Gaule by Histoire de France - Livres(1018)
Programmer en langage C by Claude Delannoy(1017)
EXCEL VBA: Guide débutant étape par étape du langage de programmation excel (French Edition) by Jason Jay(1001)
C++ pour les programmeurs C by Claude Delannoy(994)
La pâtisserie by Inconnu(e)(984)
Les grands philosophes by Collectif(961)
Actes by La Bible(956)
La vie de nos morts by Inconnu(e)(940)
La vie secrète des chats by La vie secrète des chats (2014)(908)
Programmation HTML5 avec CSS3 Pour les Nuls (French Edition) by Ed TITTEL & Chris MINNICK(900)
Apprentissage facile Structures de données et algorithmes Java: Apprenez les structures de données et les algorithmes de manière graphique et simple (French Edition) by hu yang(817)